/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package guillemar.dao;

/**
 *
 * @author root
 */
import guillemar.constantes.Constantes;
import guillemar.login.beans.Usuario;
import java.sql.*;

public class UsuarioDao {

    protected static Connection conexion;

    public static boolean conectar() {
        try {
            Class.forName("org.postgresql.Driver");
            conexion = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/postgres",
                    "postgres",
                    "postgres");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static boolean existeUsuario(Usuario u) {
        conectar();
        try {
            Statement statement = conexion.createStatement();
            ResultSet rs = statement.executeQuery(Constantes.CONSULTAR_USUARIO);
            while (rs.next()) {
                String usuario = rs.getString("nombreusuario");


                if (u.getNombreUsuario().equals(usuario)) {
                    return true;
                }

            }
            conexion.close();
        } catch (SQLException sql) {
            System.err.println("error: " + sql.getMessage());

        }

        return false;

    }

    public static boolean autenticar(Usuario u) {
        conectar();
        try {
            Statement statement = conexion.createStatement();
            ResultSet rs = statement.executeQuery(Constantes.CONSULTAR_USUARIO);
            while (rs.next()) {
                String usuario = rs.getString("nombreusuario");
                String password = rs.getString("password");

                if (u.getNombreUsuario().equals(usuario) && u.getPassword().equals(password)) {
                    return true;
                }

            }
            conexion.close();
        } catch (SQLException sql) {
            System.err.println("error: " + sql.getMessage());

        }

        return false;

    }

    public static boolean registrar(Usuario u) {
        int result = 0;
        conectar();

        try {
            PreparedStatement ps = conexion.prepareCall(Constantes.REGISTRAR_USUARIO);
            ps.setString(1, u.getNombreUsuario());
            ps.setString(2, u.getPassword());
            result = ps.executeUpdate();
            if (result > 0) {
                return true;
            }
        } catch (SQLException sql) {
            return false;
        }


        return false;
    }

    public static boolean eliminar(Usuario u) {
        int result = 0;
        conectar();

        try {
            PreparedStatement ps = conexion.prepareCall(Constantes.ELIMINAR_USUARIO);
            ps.setString(1, u.getNombreUsuario());
            result = ps.executeUpdate();

            if (result > 0) {
                return true;
            }
        } catch (SQLException sql) {
            sql.printStackTrace();
            return false;
        }


        return false;
    }

    public static boolean actualizar(Usuario u) {
        int result = 0;
        conectar();
        if (!existeUsuario(u)) {
            return false;
        }
        try {

            PreparedStatement ps = conexion.prepareCall(Constantes.ACTUALIZAR_USUARIO);
            ps.setString(1, u.getNombreUsuario());
            ps.setString(2, u.getPassword());
            ps.setString(3, u.getNombreUsuario());
            result = ps.executeUpdate();

            if (result > 0) {
                return true;
            }
        } catch (SQLException sql) {
            sql.printStackTrace();
            return false;
        }


        return false;
    }
}
